jdk8到jdk11的新特性知识点总结(全了)

您所在的位置:网站首页 windows server 2008有哪些版本和哪些新特性 jdk8到jdk11的新特性知识点总结(全了)

jdk8到jdk11的新特性知识点总结(全了)

2023-08-27 14:14| 来源: 网络整理| 查看: 265

学习新特性之前配置高版本jdk时可能会采坑,小潘哥单独有一篇博客讲了下遇到的坑。

文章目录 前言一、jdk8的新特性1.1函数式接口1.2Lambda表达式1.3 方法引用1.4Stream接口1.5Optional类 二、jdk9的新特性2.2 模块化的使用2.3 钻石操作符的使用升级2.4 集合工厂方法2.5 InputStream的增强 三、jdk10的新特性3.1 Java10的概述3.2 局部变量类型推断(2)实际意义 Java11的新特性4.1 Java11的概述4.2 简化的编译运行操作4.3 String类新增方法 总结

前言

为什么从java8讲起呢,其一 因为Java8是 Java 语言的一个重要版本,该版本于2014年3月发布,是自Java5以来最具革命性的版本,这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。其二java8和java11是长期支持版本(LTS)后续官方会长期维护。后续版本每半年出一个版本,最新版本java15在今年9月十五号已经推出。

提示:以下是本篇文章正文内容,下面案例可供参考

一、jdk8的新特性

java8的新特性还是比较多的如:函数式接口,Lambda表达式,方法引用,Stream接口, Optional类等等。

1.1函数式接口 .......... 1.函数式接口主要指只包含一个抽象方法的接口,如:java.lang.Runnablejava.util.Comparator接口等。 .......... 2.Java8提供@FunctionalInterface注解来定义函数式接口,若定义的接口不符合函数式的规范便会报错。 .......... 3.Java8中增加了java.util.function包,该包包含了常用的函数式接口,具体如下:

在这里插入图片描述

// 1.匿名内部类的语法格式: 父类/接口类型 引用变量名 = new 父类/接口类型(){ 方法的重写 }; Runnable runnable = new Runnable() { @Override public void run() { System.out.println("我是既没有参数又没有返回值的方法!"); } }; runnable.run(); // 我是既没有参数又没有返回值的方法! Consumer consumer = new Consumer() { @Override public void accept(Object o) { System.out.println(o + "有参但没有返回值的方法就是我!"); } }; consumer.accept("友情提示:"); Supplier supplier = new Supplier() { @Override public Object get() { return "无参有返回值!"; } }; Function function = new Function() { @Override public Object apply(Object o) { return o; } }; System.out.println(function.apply("有参有返回值的方法")); 1.2Lambda表达式

… 1.Lambda 表达式是实例化函数式接口的重要方式,使用 Lambda 表达式可以使代码变的更加简洁紧凑。 … 2.lambda表达式:参数列表、箭头符号->和方法体组成,而方法体中可以是表达式,也可以是语句块。 … 3.语法格式:(参数列表) -> { 方法体; } - 其中()、参数类型、{} 以及return关键字 可以省略。

//Runnable runnable1 = () -> { System.out.println("我是既没有参数又没有返回值的方法!"); }; Runnable runnable1 = () -> System.out.println("我是既没有参数又没有返回值的方法!"); runnable1.run(); Consumer consumer1 = o -> System.out.println(o + "有参但没有返回值的方法就是我!"); consumer1.accept("友情提示:"); Supplier supplier1 = () -> "无参有返回值!"; System.out.println(supplier1.get()); Function function1 = o -> o; System.out.println(function1.apply("有参有返回值的方法")); 1.3 方法引用

… 1.方法引用主要指通过方法的名字来指向一个方法而不需要为方法引用提供方法体,该方法的调用交给函数式接口执行。 … 2.方法引用使用一对冒号 :: 将类或对象与方法名进行连接,通常使用方式如下: … 对象的非静态方法引用 ObjectName :: MethodName … 类的静态方法引用 ClassName :: StaticMethodName … 类的非静态方法引用 ClassName :: MethodName … 构造器的引用 ClassName :: new … 数组的引用 TypeName[] :: new 方法引用是在特定场景下lambda表达式的一种简化表示,可以进一步简化代码的编写使代码更加紧凑简洁,从而减少冗余代码。

// 使用lambda表达式对上述代码进行优化 //list.stream().filter(person -> person.getAge() >= 18).forEach(person -> System.out.println(person)); list.stream().filter(person -> person.getAge() >= 18).forEach(System.out::println); ```实现对集合中元素通过流跳过2个元素后再取3个元素后打印 list.stream().skip(2).limit(3).forEach(System.out::println); 1.4Stream接口

(1)基本概念 java.util.stream.Stream接口是对集合功能的增强,可以对集合元素进行复杂的查找、过滤、筛选等操作。 Stream接口借助于Lambda 表达式极大的提高编程效率和程序可读性,同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势。 (2)使用步骤 创建Stream,通过一个数据源来获取一个流。 转换Stream,每次转换返回一个新的Stream对象。 对Stream进行聚合操作并产生结果。 (3)创建方式 方式一:通过调用集合的默认方法来获取流,如:default Stream stream() 方式二:通过数组工具类中的静态方法来获取流,如:static IntStream stream(int[] array) 方式三:通过Stream接口的静态方法来获取流,如:static Stream of(T… values) 方式四:通过Stream接口的静态方法来获取流,static Stream generate(Supplier



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3